package main

import (
	"fmt"
	"time"
)

/**
执行结果
子协程：i = 0
子协程：i = 1
子协程：i = 2
str = 0
str = 1
str = 2
有缓冲的channel是定义了一个长度的，在长度范围内，他是不会阻塞的，执行结果如上所示，线发送了三个，然后去执行接口打印消息，和无缓冲的channel有个鲜明的对比
 */
func main()  {
	//初始化一个长度为3的channel
	chB := make(chan int, 3)

	go func() {
		for i := 0; i < 3; i++ {
			fmt.Printf("子协程：i = %d\n", i)
			chB <- i
		}
	}()

	time.Sleep(time.Second * 2)
	for i := 0; i < 3; i++ {
		str := <- chB
		fmt.Println("str =", str)
	}
}
